package com.sunrise.generico.entidade;

import java.math.BigDecimal;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.ManyToOne;
import javax.persistence.OneToOne;
import javax.persistence.SequenceGenerator;
import javax.persistence.Table;
import javax.persistence.Transient;

import lombok.Getter;
import lombok.Setter;

import com.sunrise.generico.entidade.iface.EntidadeNegocio;

@Entity
@Table(name = "estoque")
public class Estoque implements EntidadeNegocio {

	private static final long serialVersionUID = -1381357487129767374L;

	public Estoque(){
		this.setQuantidade(new BigDecimal(0));
		this.setQuantidadeMaxima(new BigDecimal(0));
		this.setQuantidadeMinima(new BigDecimal(0));
		this.setQuantidadePrevista(new BigDecimal(0));
		this.setQuantidadeReservada(new BigDecimal(0));
		this.setQuantidadeSaldo(new BigDecimal(0));
	}
	
	@Id
	@SequenceGenerator(name="pk_sequence",sequenceName="estoque_id_seq", allocationSize=1)
	@GeneratedValue(strategy=GenerationType.SEQUENCE,generator="pk_sequence")
	@javax.persistence.Column
	@Getter @Setter
	private Long id;
	
	@ManyToOne
	@Getter @Setter
	private Produto produto;
	
	@Column(name = "quantidade", nullable = false)
	@Getter @Setter
	private BigDecimal quantidade;
	
	@Column(name = "quantidadeMaxima", nullable = false)
	@Getter @Setter
	private BigDecimal quantidadeMaxima;
	
	@Column(name = "quantidadeMinima", nullable = false)
	@Getter @Setter
	private BigDecimal quantidadeMinima;
	
	@Column(name = "quantidadeReservada", nullable = false)
	@Getter @Setter
	private BigDecimal quantidadeReservada;
	
	@Column(name = "quantidadePrevista", nullable = false)
	@Getter @Setter
	private BigDecimal quantidadePrevista;
	
	@OneToOne
	@Getter @Setter
	private Filial filial;
	
	@Transient
	@Getter @Setter
	private BigDecimal quantidadeSaldo;
	
}
